জাভাস্ক্রিপ্টে অ্যারে ইটারেশন হলো একটি প্রক্রিয়া যার মাধ্যমে অ্যারের প্রতিটি উপাদানকে একে একে প্রসেস করা হয়। ইটারেশন ব্যবহার করে আমরা অ্যারের উপাদানগুলোর উপর বিভিন্ন ধরনের অপারেশন করতে পারি, যেমন ফিল্টার করা, ম্যাপ করা, রিডিউস করা ইত্যাদি। জাভাস্ক্রিপ্টে বিভিন্ন ইটারেশন মেথড রয়েছে, যা কোডকে আরও পরিচ্ছন্ন এবং কার্যকর করে তোলে।
for
লুপfor
লুপ হলো জাভাস্ক্রিপ্টের সবচেয়ে প্রচলিত ইটারেশন পদ্ধতি। এটি অ্যারের প্রতিটি উপাদানকে নির্দিষ্ট সংখ্যক বার প্রসেস করার জন্য ব্যবহৃত হয়।
let fruits = ["Apple", "Banana", "Cherry"];
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
// আউটপুট:
// Apple
// Banana
// Cherry
for...of
লুপfor...of
লুপ ES6 থেকে পরিচিত এবং এটি অ্যারের প্রতিটি উপাদানের উপর সরাসরি ইটারেট করতে ব্যবহৃত হয়। এটি কোডকে আরও সংক্ষিপ্ত এবং পাঠযোগ্য করে তোলে।
let fruits = ["Apple", "Banana", "Cherry"];
for (let fruit of fruits) {
console.log(fruit);
}
// আউটপুট:
// Apple
// Banana
// Cherry
for...in
লুপfor...in
লুপ মূলত অবজেক্টের প্রপার্টি ইটারেট করার জন্য ব্যবহৃত হয়, কিন্তু এটি অ্যারেগুলিতেও ব্যবহার করা যেতে পারে। তবে, অ্যারেগুলির জন্য এটি সাধারণত সুপারিশ করা হয় না, কারণ এটি ইনডেক্স ছাড়া অন্যান্য প্রপার্টি ইটারেট করতে পারে।
let fruits = ["Apple", "Banana", "Cherry"];
for (let index in fruits) {
console.log(index, fruits[index]);
}
// আউটপুট:
// 0 Apple
// 1 Banana
// 2 Cherry
forEach()
forEach()
মেথড অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট একটি ফাংশন চালায়। এটি মূলত অ্যারের জন্য ব্যবহৃত হয় এবং কোনো রিটার্ন ভ্যালু থাকে না।
let fruits = ["Apple", "Banana", "Cherry"];
fruits.forEach(function(fruit) {
console.log(fruit);
});
// আউটপুট:
// Apple
// Banana
// Cherry
map()
map()
মেথড অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট একটি ফাংশন চালায় এবং নতুন একটি অ্যারে রিটার্ন করে, যেখানে প্রতিটি উপাদান হলো ফাংশনের রিটার্ন ভ্যালু।
let numbers = [1, 2, 3, 4];
let squared = numbers.map(function(number) {
return number * number;
});
console.log(squared); // আউটপুট: [1, 4, 9, 16]
filter()
filter()
মেথড অ্যারের প্রতিটি উপাদানের উপর নির্দিষ্ট একটি ফাংশন চালায় এবং একটি নতুন অ্যারে রিটার্ন করে, যেখানে শুধুমাত্র সেই উপাদানগুলো থাকে যা ফাংশনটি true
রিটার্ন করেছে।
let numbers = [1, 2, 3, 4, 5, 6];
let evenNumbers = numbers.filter(function(number) {
return number % 2 === 0;
});
console.log(evenNumbers); // আউটপুট: [2, 4, 6]
reduce()
reduce()
মেথড একটি অ্যারের সব উপাদানকে একত্রিত করে একটি একক মানে রূপান্তরিত করে। এটি দুটি প্যারামিটার গ্রহণ করে: একটি রিডিউসিং ফাংশন এবং একটি আক্রমণাত্মক মান।
let numbers = [1, 2, 3, 4];
let sum = numbers.reduce(function(accumulator, currentValue) {
return accumulator + currentValue;
}, 0);
console.log(sum); // আউটপুট: 10
some()
some()
মেথড চেক করে যদি অ্যারের কোন একটি উপাদান নির্দিষ্ট শর্ত পূরণ করে। যদি হয়, তবে এটি true
রিটার্ন করে; অন্যথায়, false
।
let numbers = [1, 2, 3, 4, 5];
let hasEven = numbers.some(function(number) {
return number % 2 === 0;
});
console.log(hasEven); // আউটপুট: true
every()
every()
মেথড চেক করে যদি অ্যারের সব উপাদান নির্দিষ্ট শর্ত পূরণ করে। যদি সবগুলোই পূরণ করে, তবে এটি true
রিটার্ন করে; অন্যথায়, false
।
let numbers = [2, 4, 6, 8];
let allEven = numbers.every(function(number) {
return number % 2 === 0;
});
console.log(allEven); // আউটপুট: true
find()
find()
মেথড প্রথম উপাদানটি রিটার্ন করে যা নির্দিষ্ট শর্ত পূরণ করে। যদি কোনো উপাদান না থাকে, তবে এটি undefined
রিটার্ন করে।
let numbers = [1, 2, 3, 4, 5];
let firstEven = numbers.find(function(number) {
return number % 2 === 0;
});
console.log(firstEven); // আউটপুট: 2
findIndex()
findIndex()
মেথড প্রথম উপাদানের ইনডেক্স রিটার্ন করে যা নির্দিষ্ট শর্ত পূরণ করে। যদি কোনো উপাদান না থাকে, তবে এটি -1
রিটার্ন করে।
let numbers = [1, 2, 3, 4, 5];
let firstEvenIndex = numbers.findIndex(function(number) {
return number % 2 === 0;
});
console.log(firstEvenIndex); // আউটপুট: 1
entries()
, keys()
, values()
এই মেথডগুলো অ্যারের ইটারেটর তৈরি করে যা for...of
লুপে ব্যবহার করা যেতে পারে।
let fruits = ["Apple", "Banana", "Cherry"];
// entries()
for (let [index, fruit] of fruits.entries()) {
console.log(index, fruit);
}
// আউটপুট:
// 0 Apple
// 1 Banana
// 2 Cherry
// keys()
for (let index of fruits.keys()) {
console.log(index);
}
// আউটপুট:
// 0
// 1
// 2
// values()
for (let fruit of fruits.values()) {
console.log(fruit);
}
// আউটপুট:
// Apple
// Banana
// Cherry
মেথড | কীভাবে কাজ করে | রিটার্ন ভ্যালু |
---|---|---|
for | নির্দিষ্ট সংখ্যক বার লুপ করে | কোনো কিছু রিটার্ন করে না |
forEach | প্রতিটি উপাদানের উপর ফাংশন চালায় | undefined |
map | প্রতিটি উপাদানের উপর ফাংশন চালায় এবং নতুন অ্যারে তৈরি করে | নতুন অ্যারে |
filter | নির্দিষ্ট শর্ত পূরণকারী উপাদানগুলোকে ফিল্টার করে | নতুন অ্যারে |
reduce | সব উপাদানকে একত্রিত করে একটি মান তৈরি করে | একক মান |
some | কোনো এক উপাদান নির্দিষ্ট শর্ত পূরণ করে কিনা চেক করে | true বা false |
every | সব উপাদান নির্দিষ্ট শর্ত পূরণ করে কিনা চেক করে | true বা false |
find | প্রথম উপাদান যা শর্ত পূরণ করে তা রিটার্ন করে | উপাদান বা undefined |
findIndex | প্রথম উপাদানের ইনডেক্স যা শর্ত পূরণ করে তা রিটার্ন করে | ইনডেক্স বা -1 |
for
লুপ: যখন আপনাকে নির্দিষ্ট সংখ্যক বার লুপ করতে হবে বা ইটারেশন কন্ট্রোল করতে হবে।forEach
: যখন আপনাকে প্রতিটি উপাদানের উপর কোনো সাইড ইফেক্ট চালাতে হবে।map
: যখন আপনাকে প্রতিটি উপাদানের ওপর কোনো রূপান্তর করতে হবে এবং নতুন অ্যারে তৈরি করতে হবে।filter
: যখন আপনাকে নির্দিষ্ট শর্ত পূরণকারী উপাদানগুলো ফিল্টার করতে হবে।reduce
: যখন আপনাকে অ্যারের সব উপাদানকে একত্রিত করে একটি মান তৈরি করতে হবে।some
: যখন আপনাকে জানতে হবে অ্যারেতে কোনো উপাদান নির্দিষ্ট শর্ত পূরণ করছে কিনা।every
: যখন আপনাকে নিশ্চিত করতে হবে অ্যারেতে সব উপাদান নির্দিষ্ট শর্ত পূরণ করছে।find
: যখন আপনাকে প্রথম উপাদানটি খুঁজে বের করতে হবে যা শর্ত পূরণ করে।findIndex
: যখন আপনাকে প্রথম উপাদানের ইনডেক্স খুঁজে বের করতে হবে যা শর্ত পূরণ করে।একটি নামের অ্যারেকে বড় হাতের অক্ষরে রূপান্তর করা।
let names = ["alice", "bob", "charlie"];
let upperNames = names.map(function(name) {
return name.toUpperCase();
});
console.log(upperNames); // আউটপুট: ["ALICE", "BOB", "CHARLIE"]
একটি সংখ্যার অ্যারেতে জোড় সংখ্যা ফিল্টার করা।
let numbers = [1, 2, 3, 4, 5, 6];
let evenNumbers = numbers.filter(function(number) {
return number % 2 === 0;
});
console.log(evenNumbers); // আউটপুট: [2, 4, 6]
একটি সংখ্যার অ্যারের সমষ্টি হিসাব করা।
let numbers = [1, 2, 3, 4];
let total = numbers.reduce(function(accumulator, currentValue) {
return accumulator + currentValue;
}, 0);
console.log(total); // আউটপুট: 10
একটি অ্যারেতে প্রথম বড় সংখ্যাটি খুঁজে বের করা।
let numbers = [1, 3, 7, 2, 9, 4];
let firstLarge = numbers.find(function(number) {
return number > 5;
});
console.log(firstLarge); // আউটপুট: 7
for...of
লুপ ব্যবহারএকটি অ্যারেতে প্রতিটি উপাদানকে প্রিন্ট করা।
let fruits = ["Apple", "Banana", "Cherry"];
for (let fruit of fruits) {
console.log(fruit);
}
// আউটপুট:
// Apple
// Banana
// Cherry
জাভাস্ক্রিপ্টে অ্যারে ইটারেশন বিভিন্ন ধরনের মেথড এবং লুপের মাধ্যমে করা যায়, যা কোডকে আরও কার্যকর, পরিচ্ছন্ন এবং রক্ষণাবেক্ষণযোগ্য করে তোলে। প্রতিটি ইটারেশন মেথডের নিজস্ব সুবিধা এবং ব্যবহার ক্ষেত্র রয়েছে, যা নির্ভর করে আপনাকে কী করতে হবে তার উপর। সঠিক মেথড নির্বাচন করে আপনি আপনার কোডের কার্যকারিতা এবং মান উন্নত করতে পারেন।
console.log()
এর সাথে স্পষ্ট বার্তা ব্যবহার করুন, যেন কোন ধাপে কি ঘটছে তা সহজে বোঝা যায়।forEach
এবং map
মধ্যে পার্থক্য কী?forEach
কোনো নতুন অ্যারে রিটার্ন করে না, এটি শুধুমাত্র প্রতিটি উপাদানের উপর ফাংশন চালায়। অন্যদিকে, map
প্রতিটি উপাদানের রিটার্ন ভ্যালু নিয়ে একটি নতুন অ্যারে তৈরি করে।
for...of
লুপ কেন for...in
লুপের তুলনায় ভালো?for...of
লুপ অ্যারের প্রতিটি উপাদানের মান সরাসরি রিটার্ন করে, যেখানে for...in
লুপ অ্যারের ইনডেক্স বা কী রিটার্ন করে। এছাড়া, for...in
লুপ অ্যারের প্রপার্টি ওভারহেড থাকতে পারে, যা অ্যারের জন্য অপ্রয়োজনীয়।
reduce
মেথড কবে ব্যবহার করা উচিত?যখন আপনাকে অ্যারের সব উপাদানকে একত্রিত করে একটি একক মান তৈরি করতে হয়, যেমন সমষ্টি, গড়, বা কোনো জটিল অবজেক্ট তৈরির জন্য reduce
মেথড ব্যবহার করা উচিত।
জাভাস্ক্রিপ্টে অ্যারে ইটারেশন বিভিন্ন পদ্ধতি ব্যবহার করে করা যায়, যা ডেভেলপারদের কোডকে আরও কার্যকর এবং রক্ষণাবেক্ষণযোগ্য করে তোলে। প্রতিটি মেথডের নিজস্ব সুবিধা এবং ব্যবহার ক্ষেত্র রয়েছে, যা নির্ভর করে আপনার নির্দিষ্ট চাহিদার উপর। সঠিক মেথড নির্বাচন এবং ব্যবহার শিখলে আপনার জাভাস্ক্রিপ্ট কোডিং দক্ষতা আরও বৃদ্ধি পাবে।
common.read_more